package com.ruoyi.echarts.util;

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class JsonArrayTransformerUtil {
    public static JSONArray transformer(String jsonArrayString){
        // 解析 JSON 数组
        JSONArray jsonArray = new JSONArray(jsonArrayString);

        // 用于存储结果的数组
        JSONArray resultArray = new JSONArray();

        // 用于临时存储每个城市的数据
        Map<String, Map<String, Integer>> cityDataMap = new HashMap<>();

        // 遍历 JSON 数组
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);

            String city = jsonObject.getString("city");
            String jobName = jsonObject.getString("job_title").trim(); // 去除空格
            int avgSalary = jsonObject.getInt("avg");

            // 获取或创建该城市的数据映射
            cityDataMap.computeIfAbsent(city, k -> new HashMap<>()).put(jobName, avgSalary);
        }

        // 将数据映射转换为所需的 JSON 对象数组
        for (Map.Entry<String, Map<String, Integer>> entry : cityDataMap.entrySet()) {
            String city = entry.getKey();
            Map<String, Integer> majorSalaries = entry.getValue();

            // 创建新的 JSON 对象
            JSONObject resultObject = new JSONObject();
            resultObject.put("city", city);

            // 添加专业和平均工资
            for (Map.Entry<String, Integer> majorEntry : majorSalaries.entrySet()) {
                resultObject.put(majorEntry.getKey(), majorEntry.getValue());
            }

            // 将 JSON 对象添加到结果数组中
            resultArray.put(resultObject);
        }
        return resultArray;
    }
    public static JSONArray transformer2(String jsonArrayString){
        // 解析 JSON 数组
        JSONArray jsonArray = new JSONArray(jsonArrayString);

        // 用于存储结果的数组
        JSONArray resultArray = new JSONArray();

        // 用于临时存储每个岗位的数据
        Map<String, Map<String, Integer>> cityDataMap = new HashMap<>();

        // 遍历 JSON 数组
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);

            String experience = jsonObject.getString("work_years");
            String majorName = jsonObject.getString("job_title");
            int avgSalary = jsonObject.getInt("avg");
            // 获取或创建该岗位的数据映射
            cityDataMap.computeIfAbsent(experience, k -> new HashMap<>()).put(majorName, avgSalary);
        }

        // 将数据映射转换为所需的 JSON 对象数组
        for (Map.Entry<String, Map<String, Integer>> entry : cityDataMap.entrySet()) {
            String experience = entry.getKey();
            Map<String, Integer> majorSalaries = entry.getValue();

            // 创建新的 JSON 对象
            JSONObject resultObject = new JSONObject();
            resultObject.put("experience", experience);

            // 添加专业和工作经验
            for (Map.Entry<String, Integer> majorEntry : majorSalaries.entrySet()) {
                resultObject.put(majorEntry.getKey(), majorEntry.getValue());
            }

            // 将 JSON 对象添加到结果数组中
            resultArray.put(resultObject);
        }
        return resultArray;
    }
    public static JSONArray transformer3(String jsonArrayString){
        // 解析 JSON 数组
        JSONArray jsonArray = new JSONArray(jsonArrayString);

        // 用于存储结果的数组
        JSONArray resultArray = new JSONArray();

        // 用于临时存储每个城市的数据
        Map<String, Map<String, Integer>> cityDataMap = new HashMap<>();

        // 遍历 JSON 数组
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);

            String educational = jsonObject.getString("education");
            String majorName = jsonObject.getString("job_title");
            int avgSalary = jsonObject.getInt("avg");

            // 获取或创建该城市的数据映射
            cityDataMap.computeIfAbsent(educational, k -> new HashMap<>()).put(majorName, avgSalary);
        }

        // 将数据映射转换为所需的 JSON 对象数组
        for (Map.Entry<String, Map<String, Integer>> entry : cityDataMap.entrySet()) {
            String educational = entry.getKey();
            Map<String, Integer> majorSalaries = entry.getValue();

            // 创建新的 JSON 对象
            JSONObject resultObject = new JSONObject();
            resultObject.put("educational", educational);

            // 添加专业和平均工资
            for (Map.Entry<String, Integer> majorEntry : majorSalaries.entrySet()) {
                resultObject.put(majorEntry.getKey(), majorEntry.getValue());
            }

            // 将 JSON 对象添加到结果数组中
            resultArray.put(resultObject);
        }
        return resultArray;
    }
}
